package com.example.mapper;

import com.example.entity.Tag;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.vo.TagPopularVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * <p>
 * 标签表 Mapper 接口
 * </p>
 *
 * @author wuyunbin
 * @since 2024-10-18
 */
@Mapper
public interface TagMapper extends BaseMapper<Tag> {

    /**
     * 更新标签的文章总数
     */
    @Update("UPDATE tb_tag t SET t.articles_total = (SELECT COUNT(*) FROM tb_article_tag_rel r WHERE r.tag_id = t.id)")
    void updateTagArticlesCount();

    /**
     * 获取文章的标签列表
     * @param articleId 文章ID
     * @return 标签列表
     */
    List<Tag> getTagsByArticleId(@Param("articleId") Integer articleId);

    /**
     * 获取热门标签
     * @param limit 限制返回数量
     * @return 热门标签列表
     */
    List<TagPopularVO> findPopularTags(@Param("limit") int limit);
}
